1. Field
The subject matter disclosed herein relates to allocating storage space for data sets based at least in part on the size of the data set.
2. Description of the Related Art
Preventing wasted storage space is an important part of many storage systems. For example, enterprise-level storage systems often store large numbers of data sets. Small amounts of wasted space associated with each data set can add up to be a large amount of wasted space in the system.
One environment in which this may occur is IBM's z/OS environment. Certain versions of z/OS, and related products, provide extended address volumes (EAVs) with two types of storage space: track-managed storage, and cylinder-managed storage. Track-managed storage is the storage on the EAV that is managed in tracks and cylinders, with each data set stored therein occupying an integral multiple of tracks. Cylinder-managed storage is managed in multi-cylinder units, and each data set stored therein occupies an integral multiple of multi-cylinder units. Requests targeted for the cylinder-managed storage are rounded up to the next multi-cylinder unit.
This system, while providing a number of advantages, may use space inefficiently. For example, a client may need to allocate a data set as part of its operations for storing data. However, the quantity of data to be stored may be unknown. The client may initiate a request to store the incoming data and specify a size of 100 cylinders, with an additional 100 cylinders to be used for overflow. The request may also include a release parameter that indicates that any unused space is to be released.
Assuming that the data sets in the cylinder-managed storage are stored in multi-cylinder units of 21 cylinders, the above request would allocate a data set in cylinder-managed storage. If there is only one track worth of data, the system will release the unused space. However, because the data is stored in cylinder-managed storage, the system can only release the space down to 21 cylinders. As a result, assuming 15 tracks per cylinder, 314 tracks are wasted and cannot be used by other data sets even though they are empty.